package com.dragon.modules.yuegou.model.wallet;

import com.dragon.modules.yuegou.entity.wallet.MerchantWalletEntity;
import io.swagger.annotations.ApiModelProperty;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 商户钱包模型类
 * 
 * @author pbuilder generated
 * @date 2019-05-07 09:09:32
 * @company sgy
 * @version 2.0
 * @see Length 长度限制
 * @see NotNull 对象非空
 * @see NotEmpty 字符串、集合、表、数组非空
 */
public class MerchantWallet extends MerchantWalletEntity {

	@ApiModelProperty("可提现金额")
	private BigDecimal amount;

	@ApiModelProperty("收入金额")
	private BigDecimal incomeAmount;

	@ApiModelProperty("支出金额")
	private BigDecimal paiedAmount;

	@ApiModelProperty("已结算金额")
	private BigDecimal settledAmount;

	@ApiModelProperty("待结算金额")
	private BigDecimal unsettledAmount;

	@ApiModelProperty("商户名称")
	private String merchantName;

	public BigDecimal getAmount() {
		return amount;
	}

	public void setAmount(BigDecimal amount) {
		this.amount = amount;
	}

	public BigDecimal getIncomeAmount() {
		return incomeAmount;
	}

	public void setIncomeAmount(BigDecimal incomeAmount) {
		this.incomeAmount = incomeAmount;
	}

	public BigDecimal getPaiedAmount() {
		return paiedAmount;
	}

	public void setPaiedAmount(BigDecimal paiedAmount) {
		this.paiedAmount = paiedAmount;
	}

	public BigDecimal getSettledAmount() {
		return settledAmount;
	}

	public void setSettledAmount(BigDecimal settledAmount) {
		this.settledAmount = settledAmount;
	}

	public BigDecimal getUnsettledAmount() {
		return unsettledAmount;
	}

	public void setUnsettledAmount(BigDecimal unsettledAmount) {
		this.unsettledAmount = unsettledAmount;
	}

	public String getMerchantName() {
		return merchantName;
	}

	public void setMerchantName(String merchantName) {
		this.merchantName = merchantName;
	}

	/**
	 * 构造一个空商户钱包模型对象
	 */
	public MerchantWallet(){
		super();
	}
	
	/**
	 * 依据实体对象的信息构造一个商户钱包模型对象
	 * 
	 * @param entity 实体对象
	 */
	public MerchantWallet(MerchantWalletEntity entity){
		super(entity);
	}

	/**
	 * 依据其它对象的信息构造一个商户钱包模型对象
	 * 
	 * @param other 其它对象
	 */
	public MerchantWallet(MerchantWallet other){
		super(other);
	}


	@Override
	public String getId() {
    	return id;
    }

    /**
	 * 设置商户钱包ID
	 * 
	 * @param id 商户钱包ID
	 * @return 当前对象
	 */
    public MerchantWallet id(String id) {
    	this.id = id;
    	return this;
    }

	@Override
	public String getMerchantId() {
    	return merchantId;
    }

    /**
	 * 设置商户ID
	 * 
	 * @param merchantId 商户ID
	 * @return 当前对象
	 */
    public MerchantWallet merchantId(String merchantId) {
    	this.merchantId = merchantId;
    	return this;
    }

	@Override
	public BigDecimal getYueCoin() {
    	return yueCoin;
    }

    /**
	 * 设置悦币余额（可提现）
	 * 
	 * @param yueCoin 悦币余额（可提现）
	 * @return 当前对象
	 */
    public MerchantWallet yueCoin(BigDecimal yueCoin) {
    	this.yueCoin = yueCoin;
    	return this;
    }

	@Override
	public BigDecimal getYueCardBought() {
    	return yueCardBought;
    }

    /**
	 * 设置会员购买的悦卡余额
	 * 
	 * @param yueCardBought 会员购买的悦卡余额
	 * @return 当前对象
	 */
    public MerchantWallet yueCardBought(BigDecimal yueCardBought) {
    	this.yueCardBought = yueCardBought;
    	return this;
    }

	@Override
	public BigDecimal getYueCardGranted() {
    	return yueCardGranted;
    }

    /**
	 * 设置企业发放的悦卡余额
	 * 
	 * @param yueCardGranted 企业发放的悦卡余额
	 * @return 当前对象
	 */
    public MerchantWallet yueCardGranted(BigDecimal yueCardGranted) {
    	this.yueCardGranted = yueCardGranted;
    	return this;
    }

	@Override
	public BigDecimal getWechatAmount() {
    	return wechatAmount;
    }

    /**
	 * 设置微信余额（会员使用微信向商户支付产生的）
	 * 
	 * @param wechatAmount 微信余额（会员使用微信向商户支付产生的）
	 * @return 当前对象
	 */
    public MerchantWallet wechatAmount(BigDecimal wechatAmount) {
    	this.wechatAmount = wechatAmount;
    	return this;
    }

	@Override
	public BigDecimal getAlipayAmount() {
    	return alipayAmount;
    }

    /**
	 * 设置支付宝余额（会员使用支付宝向商户支付产生的）
	 * 
	 * @param alipayAmount 支付宝余额（会员使用支付宝向商户支付产生的）
	 * @return 当前对象
	 */
    public MerchantWallet alipayAmount(BigDecimal alipayAmount) {
    	this.alipayAmount = alipayAmount;
    	return this;
    }

	@Override
	public BigDecimal getWithdrawableYueCoin() {
    	return withdrawableYueCoin;
    }

    /**
	 * 设置可提现的悦币余额
	 * 
	 * @param withdrawableYueCoin 可提现的悦币余额
	 * @return 当前对象
	 */
    public MerchantWallet withdrawableYueCoin(BigDecimal withdrawableYueCoin) {
    	this.withdrawableYueCoin = withdrawableYueCoin;
    	return this;
    }

	@Override
	public BigDecimal getWithdrawableYueCardBought() {
    	return withdrawableYueCardBought;
    }

    /**
	 * 设置可提现的会员购买的悦卡余额
	 * 
	 * @param withdrawableYueCardBought 可提现的会员购买的悦卡余额
	 * @return 当前对象
	 */
    public MerchantWallet withdrawableYueCardBought(BigDecimal withdrawableYueCardBought) {
    	this.withdrawableYueCardBought = withdrawableYueCardBought;
    	return this;
    }

	@Override
	public BigDecimal getWithdrawableYueCardGranted() {
    	return withdrawableYueCardGranted;
    }

    /**
	 * 设置可提现的企业发放的悦卡余额
	 * 
	 * @param withdrawableYueCardGranted 可提现的企业发放的悦卡余额
	 * @return 当前对象
	 */
    public MerchantWallet withdrawableYueCardGranted(BigDecimal withdrawableYueCardGranted) {
    	this.withdrawableYueCardGranted = withdrawableYueCardGranted;
    	return this;
    }

	@Override
	public BigDecimal getWithdrawableWechatAmount() {
    	return withdrawableWechatAmount;
    }

    /**
	 * 设置可提现的微信余额
	 * 
	 * @param withdrawableWechatAmount 可提现的微信余额
	 * @return 当前对象
	 */
    public MerchantWallet withdrawableWechatAmount(BigDecimal withdrawableWechatAmount) {
    	this.withdrawableWechatAmount = withdrawableWechatAmount;
    	return this;
    }

	@Override
	public BigDecimal getWithdrawableAlipayAmount() {
    	return withdrawableAlipayAmount;
    }

    /**
	 * 设置可提现的支付宝余额
	 * 
	 * @param withdrawableAlipayAmount 可提现的支付宝余额
	 * @return 当前对象
	 */
    public MerchantWallet withdrawableAlipayAmount(BigDecimal withdrawableAlipayAmount) {
    	this.withdrawableAlipayAmount = withdrawableAlipayAmount;
    	return this;
    }

	@Override
	public BigDecimal getNoSettlementAmount() {
    	return noSettlementAmount;
    }

    /**
	 * 设置未结算金额
	 * 
	 * @param noSettlementAmount 未结算金额
	 * @return 当前对象
	 */
    public MerchantWallet noSettlementAmount(BigDecimal noSettlementAmount) {
    	this.noSettlementAmount = noSettlementAmount;
    	return this;
    }

	@Override
	public BigDecimal getWithdrawAmount() {
    	return withdrawAmount;
    }

    /**
	 * 设置已提现金额
	 *
	 * @param withdrawAmount 已提现金额
	 * @return 当前对象
	 */
    public MerchantWallet withdrawAmount(BigDecimal withdrawAmount) {
    	this.withdrawAmount = withdrawAmount;
    	return this;
    }

	@Override
	public Integer getVersion() {
    	return version;
    }

    /**
	 * 设置版本
	 * 
	 * @param version 版本
	 * @return 当前对象
	 */
    public MerchantWallet version(Integer version) {
    	this.version = version;
    	return this;
    }

	@Override
	public String getWithdrawPassword() {
    	return withdrawPassword;
    }

    /**
	 * 设置提现密码
	 * 
	 * @param withdrawPassword 提现密码
	 * @return 当前对象
	 */
    public MerchantWallet withdrawPassword(String withdrawPassword) {
    	this.withdrawPassword = withdrawPassword;
    	return this;
    }

	@Override
	public LocalDateTime getLastWithdrawTime() {
    	return lastWithdrawTime;
    }

    /**
	 * 设置最后提现时间
	 * 
	 * @param lastWithdrawTime 最后提现时间
	 * @return 当前对象
	 */
    public MerchantWallet lastWithdrawTime(LocalDateTime lastWithdrawTime) {
    	this.lastWithdrawTime = lastWithdrawTime;
    	return this;
    }

	@Override
	public Integer getPwdErrorCount() {
    	return pwdErrorCount;
    }

    /**
	 * 设置连续密码错误次数
	 * 
	 * @param pwdErrorCount 连续密码错误次数
	 * @return 当前对象
	 */
    public MerchantWallet pwdErrorCount(Integer pwdErrorCount) {
    	this.pwdErrorCount = pwdErrorCount;
    	return this;
    }

	@Override
	public LocalDateTime getCreatedTime() {
    	return createdTime;
    }

    /**
	 * 设置创建时间
	 * 
	 * @param createdTime 创建时间
	 * @return 当前对象
	 */
    public MerchantWallet createdTime(LocalDateTime createdTime) {
    	this.createdTime = createdTime;
    	return this;
    }
}
